// utils/address.js - 地址管理工具

/**
 * API地址配置
 * @type {Object}
 */
const API_CONFIG = {
  // 开发环境
  development: {
    baseUrl: 'http://192.168.137.1:8001',
    fileUrl: 'http://113.45.222.55:9000',
    wsUrl: 'ws://localhost:8001'
  },
  
  // 测试环境
  test: {
    baseUrl: 'http://127.0.0.1:8001',
    fileUrl: 'http://113.45.222.55:9000',
    wsUrl: 'wss://test-api.doubaoai.com'
  },
  
  // 生产环境
  production: {
    baseUrl: 'https://gushu.szxhdkj.com',
    fileUrl: 'http://113.45.222.55:9000',
    wsUrl: 'wss://api.doubaoai.com'
  }
};

/**
 * 当前环境配置
 * 开发环境使用开发配置，生产环境使用生产配置
 * @type {Object}
 */
const currentEnv = process.env.NODE_ENV || 'development';
const currentConfig = API_CONFIG[currentEnv];

/**
 * 获取基础API地址
 * @returns {string} 基础API地址
 */
export const getBaseUrl = () => {
  return currentConfig.baseUrl;
};

/**
 * 获取文件服务器地址
 * @returns {string} 文件服务器地址
 */
export const getFileUrl = () => {
  return currentConfig.fileUrl;
};

/**
 * 获取WebSocket服务器地址
 * @returns {string} WebSocket服务器地址
 */
export const getWsUrl = () => {
  return currentConfig.wsUrl;
};

/**
 * 生成完整的API URL
 * @param {string} path API路径
 * @returns {string} 完整URL
 */
export const getApiUrl = (path) => {
  // 确保路径以/开头
  if (!path.startsWith('/')) {
    path = '/' + path;
  }
  return getBaseUrl() + path;
};

/**
 * 生成完整的文件URL
 * @param {string} path 文件路径
 * @returns {string} 完整URL
 */
export const getFullFileUrl = (path) => {
  if (!path) {
    return '';
  }
  
  // 如果已经是完整URL，直接返回
  if (path.startsWith('http://') || path.startsWith('https://')) {
    return path;
  }
  
  // 确保路径以/开头
  if (!path.startsWith('/')) {
    path = '/' + path;
  }
  
  return getFileUrl() + path;
};

/**
 * 获取头像URL
 * @param {string} avatarPath 头像路径
 * @returns {string} 完整的头像URL
 */
export const getAvatarUrl = (avatarPath) => {
  if (!avatarPath) {
    // 返回默认头像
    return getFileUrl() + '/static/images/default-avatar.png';
  }
  return getFullFileUrl(avatarPath);
};

/**
 * 获取聊天图片URL
 * @param {string} imagePath 图片路径
 * @returns {string} 完整的图片URL
 */
export const getChatImageUrl = (imagePath) => {
  return getFullFileUrl(imagePath);
};

/**
 * 获取设备图标URL
 * @param {string} iconPath 图标路径
 * @returns {string} 完整的图标URL
 */
export const getDeviceIconUrl = (iconPath) => {
  if (!iconPath) {
    // 返回默认图标
    return getFileUrl() + '/static/images/default-device-icon.png';
  }
  return getFullFileUrl(iconPath);
};

/**
 * 更新API配置
 * @param {string} env 环境名称
 * @param {Object} config 配置对象
 */
export const updateApiConfig = (env, config) => {
  if (API_CONFIG[env]) {
    API_CONFIG[env] = {
      ...API_CONFIG[env],
      ...config
    };
  }
};

/**
 * 设置当前环境
 * @param {string} env 环境名称
 */
export const setCurrentEnv = (env) => {
  if (API_CONFIG[env]) {
    currentEnv = env;
  } else {
    console.error(`环境 ${env} 不存在`);
  }
};

/**
 * 获取当前环境名称
 * @returns {string} 环境名称
 */
export const getCurrentEnv = () => {
  return currentEnv;
};

/**
 * 生成WebSocket连接URL
 * @param {string} path WebSocket路径
 * @returns {string} 完整WebSocket URL
 */
export const getWsConnectUrl = (path) => {
  // 确保路径以/开头
  if (!path.startsWith('/')) {
    path = '/' + path;
  }
  return getWsUrl() + path;
};

export default {
  getBaseUrl,
  getFileUrl,
  getWsUrl,
  getApiUrl,
  getFullFileUrl,
  getAvatarUrl,
  getChatImageUrl,
  getDeviceIconUrl,
  updateApiConfig,
  setCurrentEnv,
  getCurrentEnv,
  getWsConnectUrl
};
